import axios from 'axios'

/**
 * DeepSeek API服务模块
 * 负责与DeepSeek API的通信，包括：
 * - 配置API客户端
 * - 处理消息发送
 * - 错误处理
 * - 响应数据格式化
 */

// 创建API客户端实例
const apiClient = axios.create({
  baseURL: 'https://api.deepseek.com/v1', // DeepSeek API地址
  timeout: 10000, // 10秒超时
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${import.meta.env.VITE_API_KEY}` // 从环境变量获取API密钥
  }
})

// 请求拦截器 - 添加统一的请求处理
apiClient.interceptors.request.use(config => {
  // 可以在这里添加统一的请求处理逻辑
  return config
}, error => {
  return Promise.reject(error)
})

// 响应拦截器 - 添加统一的响应处理
apiClient.interceptors.response.use(response => {
  // 可以在这里添加统一的响应处理逻辑
  return response
}, error => {
  return Promise.reject(error)
})

/**
 * 发送消息到DeepSeek API
 * @param {string} message - 用户输入的消息
 * @returns {Promise<string>} - 返回AI生成的回复内容
 * @throws {Error} - 抛出请求错误
 * 
 * @example
 * try {
 *   const response = await sendMessage('Hello');
 *   console.log(response);
 * } catch (error) {
 *   console.error('API请求失败:', error);
 * }
 */
export const sendMessage = async (message) => {
  try {
    const response = await apiClient.post('/chat/completions', {
      model: "deepseek-chat",
      messages: [{
        role: "user",
        content: message
      }],
      temperature: 0.7, // 控制生成文本的随机性
      max_tokens: 1000, // 限制响应长度
      top_p: 0.9 // 控制生成文本的多样性
    })
    
    // 返回格式化后的响应数据
    return response.data.choices[0].message.content
  } catch (error) {
    // 统一错误处理
    if (error.response) {
      // 服务器响应错误
      console.error('DeepSeek API请求错误:', {
        status: error.response.status,
        data: error.response.data
      })
    } else if (error.request) {
      // 请求已发出但没有收到响应
      console.error('DeepSeek API请求超时:', error.request)
    } else {
      // 其他错误
      console.error('DeepSeek API请求配置错误:', error.message)
    }
    
    // 抛出统一的错误信息
    throw new Error('API请求失败，请稍后重试')
  }
}


